Modeling of objects in three dimensions using information processing systems has many applications. For example, software models are used during the design of mechanical parts since, among other reasons, it is usually much less expensive and time consuming to test a computer generated model of a part for parameters such as correct fit than it is to construct and test an actual prototype part. Another important purpose of modeling is to obtain a visual image of a part under design. Accordingly, there is a wide variety of software packages available on the market for geometric modeling of three dimensional objects. Such software programs are typically termed CAD programs, for computer-aided-design. Depending on the particular application for which a program is designed for use, it may also be referred to as CAE (computer aided engineering), CAM (computer aided manufacturing), CAD/CAM or other type of program.
A geometric modeling software package, such as a CAD software package, is employed by a user to create a model of a three dimensional object which can be displayed in a two dimensional representation on a computer video display terminal. The model comprises a dataset which defines the three dimensional object which is being modeled in terms of a plurality of geometric entities (i.e., shapes) in a linked network which defines how the individual geometric entities are related to each other topologically. The basic geometric entities in modeling software are (1) a point, which is a zero manifold entity, (2) a curve, which is a one manifold entity, and (3) a surface, which is a two manifold entity. A geometric entity is represented in the dataset of a model as an equation which represents the position and shape of the entity. For instance, the information in the dataset associated with a point is its three dimensional coordinates, x,y,z. The information defining a straight line (which is a type of curve) would be the equation for the line in three dimensional space, e.g. Ax+By+Cz, where A, B and C are constants. A planar surface is represented by a plane equation. More complex entities, such as splines, NURB curves and irregular surfaces are represented as approximations. Each geometric entity has associated with it a corresponding topological entity. The corresponding topological entit for a point is a vertex. The corresponding topological entity for curve is an edge. The corresponding topological entity for a surface is a face. In the dataset comprising a model each topological entity is a set of data defining the corresponding geometric entity, and indicating the other topological entitie which are adjacent to the particular topological entity. For instance, the data in the dataset associated with corner vertex 12 of cube 10 in FIG. 1 includes the corresponding geometric data (i.e., the x, y, z coordinates of vertex 12), the identity of the three edges 14, 16, and 18 which come into (meet at) the vertex, and the identity of the three surfaces 20, 22 and 24 which are adjacent to the vertex. Thus, the collection of topological entit data forms a network of associated data items which defines the model. The model of the overall cube of FIG. 1 comprises a linked network by virtue of the fact that each of the entities joined to vertex 12 is further joined to other entities. For instance, edge 18, in addition to being joined to vertex 12, is joined to vertex 26, among other entities.
Despite significant advances in geometric modeling software over the past decade, geometric modeling programs generally have a relatively high rate of failure in production environments. Failure generally occurs in two modes. In the first mode, the software itself recognizes an inconsistency in the dataset which it cannot resolve. In such an instance, the modeling software would quit the operation requested by the user and provide the user with an error message indicating that the program cannot proceed further. In the second mode of failure, the system may not recognize an inconsistency in data and will complete an operation resulting in invalid data. In such an instance, the user may or may not recognize on his own that the model comprises invalid data. In fact, the user may not recognize the existence of an invalid design until after considerable expense is incurred, for instance, in preparing a prototype based on the model. Accordingly, it is very desirable to minimize the rate of failure in geometric modeling software systems.
In geometric modeling, the level of accuracy of data varies depending on the type of data and the number and type of operations that have been performed to arrive at the data. For instance, a system may support a certain number of significant digits, e.g., 16 significant digits. Data associated with non-complex entities such as the coordinate position of a point or the equation defining a straight line can be input into the system with the maximum number of significant digits. However, as operations are performed on that data, such as moving the entity or causing it to intersect or join another entity, the accuracy of the resulting data decreases. Further, more complex geometric entities such as complex curves, known as spline curves or NURB curves, and complex surfaces are created and represented by a mathematical equation which is an approximation of the actual desired entity. Thus, all geometric entities are represented by an exact equation. The problem is that the equation itself may result in an entity which is an approximation. Typically, however, the accuracy of the approximation can be determined by calculation. Accordingly, there is a known error associated with such entities. The accuracy of such spline curves or other high order geometric entities typically start out lower than the maximum accuracy of the system. When operations are performed on an entity, its accuracy decreases even further. Operations which typically result in decreased accuracy of the model include movement of an entity and the intersection of two entities.
A fundamental query for a geometric modeler is when two geometric entities can be considered the same entity, e.g., when are two points close enough that they can be considered a single point. The answers to these queries should depend on several factors including the accumulated error of each of the entities, the proximity of each of the entities and the desired accuracy of the model as determined by the user.
There are two primary tolerancing schemes employed in curved surface based modelers of the prior art, namely, fixed absolute tolerancing and fixed relative tolerancing. In a fixed absolute tolerance system, every entity has the same tolerance. For instance, the tolerance may be set at 1.0e.sup.-4 (0.0001) and every entity is assigned that tolerance regardless of its size or position. In a absolute relative tolerance system, every entity is assigned a predetermined number of significant digits, rather than an absolute tolerance.
Accordingly, it is an object of the present invention to provide improved software for geometric modeling.
It is another object of the present invention to provide software for geometric modeling in which each entity may have a different tolerance and in which the system stores data on the tolerances of each entity.
It is a further object of the present invention to provide software for geometric modeling with improved accuracy and a decreased rate of failure.
It is yet another object of the present invention to provide software for geometric modeling which creates a model which is assured to be closed and, therefore, presumably manufacturable.
It is an additional object of the present invention to provide software for geometric modeling which allows for importing data from other systems which may have different internal tolerancing schemes than a system having the present invention.